package cn.tedu.collection2;


import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;

/**本类用于测试Collection接口*/
public class TestCollection {
    public static void main(String[] args) {
        //1.创建Collection相关的集合对象
//        Collection c = new Collection();//报错，因为Collection是接口
        //<Integer>是泛型，用来约束集合中的元素类型，不能是基本类型，必须是引用类型
        Collection<Integer> c =new ArrayList<>();//ArrayList<>里面可写可不写，也可省略

        //2.测试集合中的常用方法
        c.add(100);//向集合中添加元素
        c.add(200);
        c.add(300);
        c.add(400);
        c.add(500);
        System.out.println(c);//直接打印集合对象的名字，查看集合中存入的具体元素

//        c.clear();//清空集合
//        System.out.println(c);

        System.out.println(c.hashCode());//获取集合对象对应的哈希码值
        System.out.println(c.equals(200));//false,集合元素c与元素200不等
        System.out.println(c.contains(200));//true,判断集合是否包含指定元素200
        System.out.println(c.isEmpty());//false,判断集合是否为空
        System.out.println(c.remove(100));//删除集合中的指定元素100
        System.out.println(c);
        System.out.println(c.size());//4，获取集合中的元素个数

        Object[] array = c.toArray();//将指定集合转为数组Object
        System.out.println(Arrays.toString(array));

        //3.测试多个集合间的操作
        Collection<Integer> c2 = new ArrayList<>();//创建第2个集合
        c2.add(2);
        c2.add(4);
        c2.add(5);
        System.out.println(c2);

        c.addAll(c2);//将c2集合的所有元素添加到c集合中
        System.out.println(c);
        System.out.println(c2);

        System.out.println(c.containsAll(c2));
        //true，判断c集合是否会包含c2集合的所有元素

        c.retainAll(c2);//保留c集合中那些也属于c2集合的公共元素
        System.out.println(c);

        c.removeAll(c2);//删除c集合中属于c2集合的所有元素
        System.out.println(c);



        //4.集合的迭代/遍历
        /**迭代步骤
         * 1.获取集合对应的迭代器   c2.iterator();
         * 2.通过迭代器判断集合中是否有下一个元素可以迭代   变量名.hasNext()
         * 3.通过迭代器获取当前迭代到的元素           变量名.next(); */
        Iterator<Integer> it = c2.iterator();
        while(it.hasNext()){//如果有下一个元素
            System.out.println(it.next());//打印本轮循环到的元素
        }

    }
}
